package com.huawei.M01.iterator.M1;

/**
 * 递减元素使数组呈递减状
 * 给你一个整数数组 nums，每次 操作 会从中选择一个元素并 将该元素的值减少 1。
 * 如果符合下列情况之一，则数组 A 就是 锯齿数组
 * 每个偶数索引对应的元素都大于相邻的元素，即 A[0] > A[1] < A[2] > A[3] < A[4] > ...
 * 或者，每个奇数索引对应的元素都大于相邻的元素，即 A[0] < A[1] > A[2] < A[3] > A[4] <
 *
 * @author 111
 */
public class MoveToMakeZigzag {
    public int movesToMakeZigzag(int[] nums) {
        return Math.min(getMinMove(nums,0), getMinMove(nums, 1));
    }

    private int getMinMove(int[] nums, int start) {
        int result = 0;
        for (int i = start; i < nums.length; i += 2) {
            int step = 0;
            if (i > 0) {
                step = Math.max(step, nums[i] - nums[i - 1] + 1);
            }
            if (i + 1 < nums.length) {
                step = Math.max(step, nums[i] - nums[i + 1] + 1);
            }
            result += step;
        }
        return result;
    }

    public static void main(String[] args) {
        System.out.println(new MoveToMakeZigzag().movesToMakeZigzag(new int[]{9, 6, 1, 6, 2}));
    }

}
